﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace API_CIC
{
    public partial class SiteMaster : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        // <summary>
        // Propósito: Borra un objeto MenuItem del menu p_navigationMenu, con el valor p_Menu
        // </summary>
        void BorrarMenu(Menu p_navigationMenu,String p_menu)
        {
            System.Collections.IEnumerator enu = p_navigationMenu.Items.GetEnumerator();
            BorrarMenu_aux(p_navigationMenu.Items, p_navigationMenu.Items.GetEnumerator(), p_menu);   
        }
        void BorrarMenu_aux(MenuItemCollection p_menu,System.Collections.IEnumerator p_enu,String p_txtMenu)
        {
            if (p_enu.MoveNext())
            {
                if (((MenuItem)p_enu.Current).ChildItems.Count > 0)
                {
                    BorrarMenu_aux(((MenuItem)p_enu.Current).ChildItems,((MenuItem)p_enu.Current).ChildItems.GetEnumerator(), p_txtMenu);
                }
                if (((MenuItem)p_enu.Current).Value.CompareTo(p_txtMenu)==0)
                {
                    p_menu.Remove((MenuItem)p_enu.Current);
                    //((MenuItem)p_enu.Current).Text = "";
                    //((MenuItem)p_enu.Current).Enabled = false;
                    return;
                }
                else
                {
                    BorrarMenu_aux(p_menu, p_enu, p_txtMenu);
                }
            }
        }

        protected void NavigationMenu_Load(object sender, EventArgs e)
        {
            //BorrarMenu(NavigationMenu,"Gestión");
            
        }
        
        protected void lblLogin_Load(object sender, EventArgs e)
        {
            
            if (Session["user"] != null)
            {
                lblLogin.Text = ((SGAPFUSUARIO)Session["user"]).TXT_USUARIO;
                lblLogin.Enabled = false;
                lblLogout.Visible = true;
                lblLogout.Text = "Salir";
                MostrarMenu();
            }
            else
            {
                lblLogin.Enabled = true;
                lblLogout.Visible = false;
            }
        }

        private void MostrarMenu()
        {
            NavigationMenu.DataBind();
            SGAPFUSUARIO usu = (SGAPFUSUARIO)Session["user"];
            System.Collections.IEnumerator enu = usu.SGAPFROLE.SGAPFROL_PERMISOs.GetEnumerator();
            Boolean gestionProyectos = false;
            Boolean gestionUsuariosRoles = false;
            Boolean gestionActivos = false;
            Boolean gestionGaleria = false;
            Boolean administrador = false;
            List<SGAPFROL_PERMISO> lista = CapaDatos.cRolesDatos.GetRolPermiso(usu.COD_ROLADMIN);
            enu = lista.GetEnumerator();
            while (enu.MoveNext())
            {
                if (((SGAPFROL_PERMISO)enu.Current).COD_PERMISO == 1)
                    gestionProyectos = true;
                if (((SGAPFROL_PERMISO)enu.Current).COD_PERMISO == 2)
                    gestionUsuariosRoles = true;
                if (((SGAPFROL_PERMISO)enu.Current).COD_PERMISO == 3)
                    gestionActivos = true;
                if (((SGAPFROL_PERMISO)enu.Current).COD_PERMISO == 4)
                    gestionGaleria = true;
                if (((SGAPFROL_PERMISO)enu.Current).COD_PERMISO == 5)
                    administrador = true;
            } 
            
            if (!gestionProyectos && !administrador)
            {
                BorrarMenu(NavigationMenu, "gproyectos");
            }
            else 
            {
                //MostrarMenu(NavigationMenu,"gproyectos","Gestión");
            }
            if (!gestionUsuariosRoles && !administrador)
            {
                BorrarMenu(NavigationMenu, "Usuarios y Roles");
            }
            else
            {
               // MostrarMenu(NavigationMenu, "Usuarios y Roles", "Usuarios y Roles");
            }
            if (!gestionActivos && !administrador)
            {
                BorrarMenu(NavigationMenu, "Gestion de Activos");
            }
            else
            {
             //   MostrarMenu(NavigationMenu,"Gestion de Activos", "Gestión de Activos");
            }
        }

        private void MostrarMenu(Menu p_navigationMenu, string p_menu, string p_text)
        {
            System.Collections.IEnumerator enu = p_navigationMenu.Items.GetEnumerator();
            MostrarMenu_aux(p_navigationMenu.Items, p_navigationMenu.Items.GetEnumerator(), p_menu, p_text);
        }
        void MostrarMenu_aux(MenuItemCollection p_menu, System.Collections.IEnumerator p_enu, String p_txtMenu, String p_text)
        {
            if (p_enu.MoveNext())
            {
                if (((MenuItem)p_enu.Current).ChildItems.Count > 0)
                {
                    MostrarMenu_aux(((MenuItem)p_enu.Current).ChildItems, ((MenuItem)p_enu.Current).ChildItems.GetEnumerator(), p_txtMenu,p_text);
                }
                if (((MenuItem)p_enu.Current).Value.CompareTo(p_txtMenu) == 0)
                {
                    
                    //((MenuItem)p_enu.Current).Text = p_text;
                    //((MenuItem)p_enu.Current).Enabled = true;
                    return;
                }
                else
                {
                    MostrarMenu_aux(p_menu, p_enu, p_txtMenu,p_text);
                }
            }
        }

      

        protected void lblLogout_Click(object sender, EventArgs e)
        {
            Session["user"] = null;
            Response.Redirect(Request.Url.AbsoluteUri);

        }

        protected void lblLogin_Click(object sender, EventArgs e)
        {

        }


        private MenuItemCollection col;
    }
}
